﻿using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Windows.Forms;
using vensoft.BussinesLogic;
using vensoft.Entities;

namespace vensoft.Win32
{
    public partial class frmDarAltaBajaStock : Form
    {
        IHistoricoABBL historicoABBL;
        IDetalleAlmacenBL detalleBL;

        public frmDarAltaBajaStock()
        {
            InitializeComponent();
        }

        public List<Usuario> UsuarioActual { get; set; }

        private void btnAceptar_Click(object sender, EventArgs e)
        {
            HistoricoAB historico = new HistoricoAB();
            historico.ID_Almacen = Convert.ToInt32(iD_AlmacenTextBox.Text);
            historico.Ubicacion = ubicacionTextBox.Text;
            historico.ID_Prod = Convert.ToInt32(id_ProductoTextBox.Text);
            historico.Cod_Prod = cod_ProductoTextBox.Text;
            historico.Nombre = nombreTextBox.Text;
            historico.Cantidad = Convert.ToInt32(nudCantidad.Value);
            historico.Movimiento = cbbMovimiento.SelectedItem.ToString();
            historico.Motivo = txtMotivo.Text;
            historico.Nombre_Usuario = UsuarioActual.ElementAt(0).Nomb_Usuario;
            historicoABBL = new HistoricoABBL();
            historicoABBL.RegistrarHistoricoAB(historico);

            detalleBL = new DetalleAlmacenBL();
            detalleBL.ActualizarStockDetalleAlmacen(Movimiento, Convert.ToInt32(nudCantidad.Value), CurrentAlmacen.ID_Almacen, CurrentProducto.Id_Producto);
            MessageBox.Show("Operación Registrada con Éxito");
            Close();
        }

        private void frmDarAltaBajaStock_Load(object sender, EventArgs e)
        {
            cbbMovimiento.SelectedItem = "Alta";      
        }

        public Almacen CurrentAlmacen
        {
            get { return almacenBindingSource.Current as Almacen; }
            set
            {
                almacenBindingSource.DataSource = value;
            }
        }
        public void Llamar()
        {
            almacenBindingSource.DataSource = CurrentAlmacen;
        }

        private void btnCancelar_Click(object sender, EventArgs e)
        {
            Close();
        }

        public Producto CurrentProducto
        {
            get { return productoBindingSource.Current as Producto; }
            set
            {
                productoBindingSource.DataSource = value;
            }
        }

        private void btnBuscarProducto_Click(object sender, EventArgs e)
        {
            if (iD_AlmacenTextBox.Text == "" && ubicacionTextBox.Text == "")
            {
                MessageBox.Show("Debe primero elegir un almacén de origen!");
            }
            else
            {
                frmGestionarProducto prod = new frmGestionarProducto();
                prod.id_almacen = Convert.ToInt32(iD_AlmacenTextBox.Text);
                prod.estadoBotones = 2;
                prod.ShowDialog();
                if (prod.Current != null)
                {
                    CurrentProducto = prod.Current;                    
                    productoBindingSource.ResetBindings(true);
                    txtStock_M.Text = prod.Stock_M.ToString();
                    txtStock_B.Text = prod.Stock_B.ToString();
                }
            }
        }

        public Int32 Movimiento { get; set; }

        private void cbbMovimiento_SelectedIndexChanged(object sender, EventArgs e)
        {
            
            if (cbbMovimiento.SelectedItem.ToString() == "Alta")
            {
                Movimiento = 0;              
            }
            else
            {
                Movimiento = 1;              
            }
        }

        private void nudCantidad_Validating(object sender, CancelEventArgs e)
        {
            ErrorProvider(nudCantidad);
        }

        private void ErrorProvider(NumericUpDown N)
        {
            if (Movimiento == 0)
            {
                if (N.Value > Convert.ToInt32(txtStock_M.Text))
                {
                    erpValidarCantidad.SetError(N, "La cantidad colocada no es la ideal");
                    btnAceptar.Enabled = false;
                }
                else
                {
                    erpValidarCantidad.SetError(N, "");
                    btnAceptar.Enabled = true;
                }
            }
            else
            {
                if (N.Value > Convert.ToInt32(txtStock_B.Text))
                {
                    erpValidarCantidad.SetError(N, "La cantidad colocada no es la ideal");
                    btnAceptar.Enabled = false;
                }
                else
                {
                    erpValidarCantidad.SetError(N, "");
                    btnAceptar.Enabled = true;
                }
            }
  
        }

    }
}
